package yolorpc.model;


import cn.hutool.core.util.StrUtil;
import lombok.Data;

/**
 * @author yolo
 * @Program RPC
 * @description 服务元信息（注册信息）
 * @create 2025-04-28 14:01
 **/
@Data
public class ServiceMetaInfo {

    /**
     * 服务名称
     * */
    private String serviceName;

    /**
     * 服务版本号
     * */
    private String serviceVersion = "1.0";

    /**
     * 服务域名
     * */
    private String serviceHost;

    /**
     * 服务端口
     * */
    private Integer servicePort;

    /**
     * 服务组别
     * */
    private String serviceGroup = "default";

    /**
     * 获取注册信息键名（serviceName:version）
     * */
    public String getServiceKey(){
        return String.format("%s:%s", serviceName, serviceVersion);
    }

    /**
     * 获取注册信息节点值【服务提供者的key，可以用于获取该服务提供者提供的所有服务】(serviceName:version/serviceHost:servicePort)
     * */
    public String getServiceNodeKey(){
        return String.format("%s/%s:%s", getServiceKey(), serviceHost, servicePort);
    }

    /**
     * 获取完整服务地址
     *
     * @return
     */
    public String getServiceAddress() {
        if (!StrUtil.contains(serviceHost, "http")) {
            return String.format("http://%s:%s", serviceHost, servicePort);
        }
        return String.format("%s:%s", serviceHost, servicePort);
    }
}
